package web.suzy.oj.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import web.suzy.oj.pojo.entity.user.SysRole;
import web.suzy.oj.pojo.entity.user.SysUserRole;
import web.suzy.oj.pojo.vo.SysUserRoleVO;

import java.util.List;

/**
 * YangSuzy 软件工作室
 * 类名: SysUserRoleMapper
 * 描述: 用户角色表 Mapper接口
 * 功能: ---- 待定 -----
 *
 * @author YangSuzy
 * Date: 2022/11/8 22:31
 */
@Mapper
@Repository
public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
    /**
     * 方法名: getUserRoles
     * 描述: 根据用户 UID或用户名获取用户信息以及其对应的角色
     *
     * @param uid      用户 UID
     * @param username 用户名
     * @return web.suzy.oj.pojo.vo.SysUserRoleVO
     * @date 2022/11/8 22:51
     * @auther YangSuzy
     **/
    SysUserRoleVO getUserRoles(
            @Param("uid") String uid,
            @Param("username") String username
    );

    /**
     * 方法名: getRolesByUid
     * 描述: 根据用户 UID获取角色列表
     *
     * @param uid 用户 UID
     * @return java.util.List<web.suzy.oj.pojo.entity.user.SysRole>
     * @date 2022/11/8 22:52
     * @auther YangSuzy
     **/
    List<SysRole> getRolesByUid(@Param("uid") String uid);


    /**
     * 方法名: getUserList
     * 描述: 根据关键字分页模糊查询获取用户信息列表
     *
     * @param page        分页对象
     * @param limit       每页显示数量
     * @param currentPage 当前页
     * @param keyword     关键字
     * @return com.baomidou.mybatisplus.core.metadata.IPage<web.suzy.oj.pojo.vo.SysUserRoleVO>
     * @date 2022/11/8 23:05
     * @auther YangSuzy
     **/
    IPage<SysUserRoleVO> getUserList(
            Page<SysUserRoleVO> page,
            @Param("limit") int limit,
            @Param("currentPage") int currentPage,
            @Param("keyword") String keyword
    );

    /**
     * 方法名: getAdminUserList
     * 描述: 根据关键字分页模糊查询获取管理员信息列表
     *
     * @param page        分页对象
     * @param limit       每页显示数量
     * @param currentPage 当前页
     * @param keyword     关键字
     * @return com.baomidou.mybatisplus.core.metadata.IPage<web.suzy.oj.pojo.vo.SysUserRoleVO>
     * @date 2022/11/8 23:14
     * @auther YangSuzy
     **/
    IPage<SysUserRoleVO> getAdminUserList(
            Page<SysUserRoleVO> page,
            @Param("limit") int limit,
            @Param("currentPage") int currentPage,
            @Param("keyword") String keyword
    );
}
